Apache Commons IO লাইব্রেরি Java ফাইল ম্যানিপুলেশন এবং ফাইল সিস্টেম সম্পর্কিত কাজগুলো সহজ করতে অনেক ইউটিলিটি সরবরাহ করে। এর মধ্যে File Comparator এবং FileUtils Content Comparator খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি ফাইলের তুলনা করতে চান। এই ক্লাসগুলো ফাইলের কন্টেন্ট বা প্রপার্টির ভিত্তিতে দুটি ফাইল তুলনা করতে সহায়তা করে।
এই নিবন্ধে আমরা File Comparator এবং FileUtils Content Comparator এর ব্যবহারের উপর আলোচনা করব, যাতে আপনি বুঝতে পারেন কিভাবে ফাইলের বৈশিষ্ট্য বা কন্টেন্টের ভিত্তিতে তুলনা করতে হবে।
File Comparator সাধারণত দুইটি ফাইলের তুলনা করতে ব্যবহৃত হয়। এই তুলনা ফাইলের প্রপার্টি, যেমন ফাইল সাইজ, পরিবর্তন তারিখ, নাম ইত্যাদি ভিত্তিতে করা যেতে পারে। Apache Commons IO এর FileComparator
ইন্টারফেস এবং FilenameComparator
ক্লাস ব্যবহার করে সহজেই ফাইলগুলোর মধ্যে তুলনা করা যায়।
FileComparator ইন্টারফেসটি ফাইলের তুলনা করতে ব্যবহৃত হয়। এটি compare()
মেথডের মাধ্যমে দুটি ফাইলের তুলনা করে। আপনি বিভিন্ন কন্ডিশনে ফাইলের তুলনা করতে এটি ব্যবহার করতে পারেন।
উদাহরণ: FileComparator ব্যবহার
import org.apache.commons.io.comparator.FileComparator;
import java.io.File;
public class FileComparatorExample {
public static void main(String[] args) {
// Create two File objects
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// Compare two files using FileComparator
FileComparator comparator = new FileComparator();
int result = comparator.compare(file1, file2);
// Print comparison result
if (result < 0) {
System.out.println(file1.getName() + " is less than " + file2.getName());
} else if (result > 0) {
System.out.println(file1.getName() + " is greater than " + file2.getName());
} else {
System.out.println(file1.getName() + " is equal to " + file2.getName());
}
}
}
এখানে:
FileComparator
মেথডটি file1.txt এবং file2.txt ফাইলগুলির মধ্যে তুলনা করবে।compare()
মেথডটি ফাইলের নামের ভিত্তিতে তুলনা করে।আউটপুট:
file1.txt is less than file2.txt
এটি ফাইলের নামের অ্যালফাবেটিক্যাল অর্ডার অনুযায়ী তুলনা করবে।
আপনি ফাইলের তুলনা কাস্টমাইজ করতে পারেন, যেমন ফাইলের সাইজ বা লাস্ট মডিফাইড সময়ের ভিত্তিতে তুলনা করা। আপনি FileComparator
ইন্টারফেস ইমপ্লিমেন্ট করে কাস্টম তুলনা লজিক তৈরি করতে পারেন।
import java.io.File;
import java.util.Comparator;
public class CustomFileComparator implements Comparator<File> {
@Override
public int compare(File file1, File file2) {
// Compare based on file size
long size1 = file1.length();
long size2 = file2.length();
if (size1 < size2) return -1;
if (size1 > size2) return 1;
return 0;
}
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
CustomFileComparator comparator = new CustomFileComparator();
int result = comparator.compare(file1, file2);
if (result < 0) {
System.out.println(file1.getName() + " is smaller than " + file2.getName());
} else if (result > 0) {
System.out.println(file1.getName() + " is larger than " + file2.getName());
} else {
System.out.println(file1.getName() + " and " + file2.getName() + " are of equal size");
}
}
}
এখানে:
CustomFileComparator
ফাইলের আকারের ভিত্তিতে তুলনা করছে।FileUtils Content Comparator ফাইলের কন্টেন্ট তুলনা করার জন্য ব্যবহৃত হয়। এটি সাধারণত দুটি ফাইলের কন্টেন্টের মধ্যে তুলনা করার জন্য ব্যবহৃত হয়, যেমন ফাইলের ভেতরের টেক্সট বা বাইনারি ডেটার তুলনা করা। Apache Commons IO লাইব্রেরির FileUtils
ক্লাসে এই ধরনের ফাংশনালিটি পাওয়া যায় যা দুটি ফাইলের কন্টেন্ট তুলনা করতে সহায়তা করে।
FileUtils ক্লাসের contentEquals()
মেথড ব্যবহার করে দুটি ফাইলের কন্টেন্ট তুলনা করা যায়। এটি ফাইলের কন্টেন্টের মধ্যে কোনো পরিবর্তন থাকলে true অথবা false রিটার্ন করে।
উদাহরণ: FileUtils Content Comparator
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileContentComparisonExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// Compare file content
boolean isContentEqual = FileUtils.contentEquals(file1, file2);
if (isContentEqual) {
System.out.println("The files have the same content.");
} else {
System.out.println("The files have different content.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
FileUtils.contentEquals()
মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করছে এবং এটি true রিটার্ন করবে যদি ফাইলগুলির কন্টেন্ট একই হয়, নতুবা false।আউটপুট:
The files have different content.
আপনি যদি ফাইলের টেক্সট কন্টেন্ট তুলনা করতে চান, তাহলে contentEqualsIgnoreEOL()
মেথড ব্যবহার করতে পারেন, যা ফাইলের কন্টেন্টের শেষে লাইন পরিবর্তন (End of Line - EOL) চিহ্ন উপেক্ষা করে তুলনা করবে।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class ContentComparisonIgnoreEOLExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// Compare content ignoring EOL characters
boolean isContentEqual = FileUtils.contentEqualsIgnoreEOL(file1, file2, "UTF-8");
if (isContentEqual) {
System.out.println("The files have the same content (ignoring EOL).");
} else {
System.out.println("The files have different content (ignoring EOL).");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
contentEqualsIgnoreEOL()
মেথডটি ফাইলের কন্টেন্টের মধ্যে লাইন পরিবর্তন চিহ্ন উপেক্ষা করে তুলনা করে।Apache Commons IO লাইব্রেরির FileComparator এবং FileUtils Content Comparator ক্লাস দুটি ফাইলের তুলনা করার জন্য ব্যবহৃত হয়। FileComparator ফাইলের বৈশিষ্ট্য যেমন নাম, সাইজ, তারিখ ইত্যাদির উপর ভিত্তি করে তুলনা করতে ব্যবহৃত হয়, যেখানে FileUtils Content Comparator ফাইলের কন্টেন্ট, যেমন টেক্সট বা বাইনারি ডেটার মধ্যে তুলনা করে। এই দুটি ক্লাসই ফাইলের বৈশিষ্ট্য বা কন্টেন্টের ভিত্তিতে তুলনা সহজ এবং কার্যকরী করে তোলে।
Apache Commons IO লাইব্রেরি FileComparator একটি বিশেষ ধরনের কম্প্যারেটর (comparator) যা ফাইলের তুলনা করতে ব্যবহৃত হয়। এটি Java I/O অপারেশনের একটি গুরুত্বপূর্ণ অংশ, যেটি ফাইল সিস্টেমে বিভিন্ন ফাইলের মধ্যে পার্থক্য নির্ধারণ বা তুলনা করতে সাহায্য করে। আপনি যখন ফাইল ম্যানিপুলেশন বা ফাইল সিস্টেম অপারেশন করবেন, তখন ফাইলের তুলনা করার প্রয়োজন হতে পারে, যেমন ফাইল মডিফিকেশন, মুছে ফেলা, বা ফাইল এক্সটেনশন চেক করা ইত্যাদি।
FileComparator ক্লাসের মাধ্যমে আপনি সহজেই ফাইলগুলোর মধ্যে তুলনা করে ফাইল সিস্টেমে কার্যক্রম সম্পাদন করতে পারেন। এর সাহায্যে আপনি ফাইল সাইজ, মডিফিকেশন টাইম, নাম, এক্সটেনশন ইত্যাদির উপর ভিত্তি করে তুলনা করতে পারেন। এটি Java Comparator ইন্টারফেসের একটি বাস্তবায়ন (implementation) যা ফাইলের বিভিন্ন প্রপার্টি অনুযায়ী ফাইল গুলোর তুলনা করে।
FileComparator হল একটি ইন্টারফেস যা ফাইলের properties এর ভিত্তিতে ফাইলগুলোর তুলনা করার জন্য ব্যবহৃত হয়। এটি মূলত compare()
মেথডটি ফাইলগুলির মধ্যে তুলনা করতে ব্যবহার করে এবং একটি পূর্ণসংখ্যা রিটার্ন করে:
এটি ফাইল সিস্টেমের পরিচালনার জন্য খুবই কার্যকরী, বিশেষ করে যখন আপনি একাধিক ফাইল তুলনা করবেন এবং তাদের সাথে বিভিন্ন কার্যকলাপ সম্পাদন করবেন।
ফাইলের তুলনা করার অনেক প্রয়োজনীয়তা হতে পারে, যেমন:
ফাইল কম্প্যারেটর ব্যবহৃত হয় যখন আপনি ফাইল ম্যানিপুলেশন (যেমন ফাইল কপি, মুভ, বা ডিলিট) করতে চান এবং ফাইলগুলির মধ্যে তুলনা করে কিছু কার্যক্রম সম্পাদন করতে চান।
FileComparator ব্যবহার করে বিভিন্ন ধরনের ফাইল তুলনা করা যেতে পারে। নিচে কিছু উদাহরণ দেওয়া হল যেখানে FileComparator ব্যবহার করে ফাইল তুলনা করা হচ্ছে।
import org.apache.commons.io.comparator.FileSizeComparator;
import java.io.File;
public class FileComparatorExample {
public static void main(String[] args) {
File file1 = new File("path/to/file1.txt");
File file2 = new File("path/to/file2.txt");
FileSizeComparator fileSizeComparator = new FileSizeComparator();
int result = fileSizeComparator.compare(file1, file2);
if (result < 0) {
System.out.println("file1 is smaller than file2");
} else if (result > 0) {
System.out.println("file1 is larger than file2");
} else {
System.out.println("file1 and file2 have the same size");
}
}
}
এখানে:
import org.apache.commons.io.comparator.LastModifiedFileComparator;
import java.io.File;
public class FileComparatorExample {
public static void main(String[] args) {
File file1 = new File("path/to/file1.txt");
File file2 = new File("path/to/file2.txt");
LastModifiedFileComparator lastModifiedFileComparator = LastModifiedFileComparator.LASTMODIFIED_COMPARATOR;
int result = lastModifiedFileComparator.compare(file1, file2);
if (result < 0) {
System.out.println("file1 is older than file2");
} else if (result > 0) {
System.out.println("file1 is newer than file2");
} else {
System.out.println("file1 and file2 have the same modification time");
}
}
}
এখানে:
import org.apache.commons.io.comparator.NameFileComparator;
import java.io.File;
public class FileComparatorExample {
public static void main(String[] args) {
File file1 = new File("path/to/file1.txt");
File file2 = new File("path/to/file2.txt");
NameFileComparator nameFileComparator = new NameFileComparator();
int result = nameFileComparator.compare(file1, file2);
if (result < 0) {
System.out.println("file1 comes before file2 in alphabetical order");
} else if (result > 0) {
System.out.println("file1 comes after file2 in alphabetical order");
} else {
System.out.println("file1 and file2 have the same name");
}
}
}
এখানে:
FileComparator হল Apache Commons IO লাইব্রেরির একটি অত্যন্ত কার্যকরী কম্প্যারেটর, যা Java ডেভেলপারদের ফাইল তুলনা করতে সহায়তা করে। এটি ফাইলের বিভিন্ন প্রপার্টি (যেমন নাম, সাইজ, মডিফিকেশন টাইম, এক্সটেনশন) এর ভিত্তিতে তুলনা করতে ব্যবহৃত হয় এবং ফাইল সিস্টেম ম্যানিপুলেশন সহজ করে তোলে। FileComparator ব্যবহার করে আপনি ফাইলগুলোর মধ্যে পার্থক্য বের করে সেই অনুযায়ী কার্যক্রম (যেমন কপি, মুভ, বা ডিলিট) করতে পারেন।
Apache Commons IO লাইব্রেরি ফাইল সম্পর্কিত কার্যাবলীর জন্য অনেক ইউটিলিটি সরবরাহ করে। ফাইলের size, date, এবং name অনুযায়ী ফাইলগুলিকে compare করার জন্য আপনি FileUtils এবং FilenameUtils ক্লাস ব্যবহার করতে পারেন।
ফাইলের মধ্যে বিভিন্ন বৈশিষ্ট্য যেমন ফাইলের আকার, তৈরি তারিখ, পরিবর্তিত তারিখ এবং নামের তুলনা করা অনেক সময় প্রয়োজন হয়। এই কার্যাবলী সাধারনত ফাইল সিস্টেমের সঙ্গতিপূর্ণ ব্যবস্থাপনা এবং সঠিক ফাইল নির্বাচন করতে সহায়তা করে।
ফাইলের আকার File.length() মেথড দ্বারা পাওয়া যায় এবং এটি bytes এ আউটপুট দেয়। দুইটি ফাইলের আকার তুলনা করতে, আপনি File অবজেক্টের আকার তুলনা করতে পারেন।
import java.io.File;
public class CompareFileSizeExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইলের আকার তুলনা করা
if (file1.length() > file2.length()) {
System.out.println(file1.getName() + " is larger than " + file2.getName());
} else if (file1.length() < file2.length()) {
System.out.println(file2.getName() + " is larger than " + file1.getName());
} else {
System.out.println("Both files have the same size.");
}
}
}
এখানে:
আউটপুট:
file1.txt is larger than file2.txt
ফাইলের last modified date তুলনা করার জন্য File.lastModified() মেথড ব্যবহার করা হয়। এই মেথডটি ফাইলের শেষ পরিবর্তনের সময় ফেরত দেয়, যেটি milliseconds এ থাকে। আপনি এটি ব্যবহার করে ফাইলের তারিখ তুলনা করতে পারেন।
import java.io.File;
public class CompareFileDateExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইলের তারিখ তুলনা করা
if (file1.lastModified() > file2.lastModified()) {
System.out.println(file1.getName() + " was modified later than " + file2.getName());
} else if (file1.lastModified() < file2.lastModified()) {
System.out.println(file2.getName() + " was modified later than " + file1.getName());
} else {
System.out.println("Both files were modified at the same time.");
}
}
}
এখানে:
আউটপুট:
file2.txt was modified later than file1.txt
ফাইলের নাম File.getName() মেথড ব্যবহার করে পাওয়া যায়। ফাইলের নাম অনুযায়ী তুলনা করার জন্য সাধারণত String.compareTo() বা String.equals() মেথড ব্যবহার করা হয়।
import java.io.File;
public class CompareFileNameExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইলের নাম তুলনা করা
if (file1.getName().equals(file2.getName())) {
System.out.println("Both files have the same name.");
} else {
System.out.println("Files have different names.");
}
}
}
এখানে:
আউটপুট:
Files have different names.
ফাইলের আকার, তারিখ, এবং নাম অনুযায়ী তুলনা একত্রে করতে, আপনি File.length(), File.lastModified(), এবং File.getName() মেথডগুলোকে একত্রে ব্যবহার করতে পারেন।
import java.io.File;
public class CompareFileExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইলের আকার তুলনা
if (file1.length() > file2.length()) {
System.out.println(file1.getName() + " is larger than " + file2.getName());
} else if (file1.length() < file2.length()) {
System.out.println(file2.getName() + " is larger than " + file1.getName());
} else {
System.out.println("Both files have the same size.");
}
// ফাইলের তারিখ তুলনা
if (file1.lastModified() > file2.lastModified()) {
System.out.println(file1.getName() + " was modified later than " + file2.getName());
} else if (file1.lastModified() < file2.lastModified()) {
System.out.println(file2.getName() + " was modified later than " + file1.getName());
} else {
System.out.println("Both files were modified at the same time.");
}
// ফাইলের নাম তুলনা
if (file1.getName().equals(file2.getName())) {
System.out.println("Both files have the same name.");
} else {
System.out.println("Files have different names.");
}
}
}
এখানে:
আউটপুট:
file1.txt is larger than file2.txt
file1.txt was modified later than file2.txt
Files have different names.
Apache Commons IO লাইব্রেরি আপনাকে FileUtils এবং FilenameUtils ক্লাসের মাধ্যমে ফাইলের তুলনা আরও সহজ করে দেয়। FileUtils ক্লাসে contentEquals() মেথড রয়েছে, যা দুইটি ফাইলের কন্টেন্ট তুলনা করতে সাহায্য করে, এবং FilenameUtils ফাইলের নামের সাথে সম্পর্কিত কাজগুলো করতে সাহায্য করে।
Apache Commons IO লাইব্রেরি ফাইলের আকার, তারিখ, এবং নাম অনুযায়ী তুলনা করার জন্য শক্তিশালী এবং কার্যকরী টুল সরবরাহ করে। File.length(), File.lastModified(), এবং File.getName() মেথডের মাধ্যমে আপনি ফাইলের আকার, তারিখ এবং নাম তুলনা করতে পারেন। এছাড়াও, Apache Commons IO এর FileUtils এবং FilenameUtils ক্লাসের মাধ্যমে ফাইলের কন্টেন্ট এবং নামের তুলনা আরও সহজ করা যায়।
Apache Commons IO লাইব্রেরি একটি শক্তিশালী টুলসেট সরবরাহ করে, যার মাধ্যমে আপনি সহজে ফাইল এবং স্ট্রিম সম্পর্কিত বিভিন্ন কার্যক্রম পরিচালনা করতে পারেন। এর মধ্যে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো File Content Comparator (ফাইল কন্টেন্ট কম্প্যারেটর), যা দুটি ফাইলের কন্টেন্ট তুলনা করতে ব্যবহৃত হয়।
ফাইল কন্টেন্ট তুলনা করার জন্য FileUtils.contentEquals() মেথডটি ব্যবহার করা হয়, যা দুটি ফাইলের কন্টেন্ট (বাইটস) সমান কি না তা চেক করে। এটি বিশেষ করে তখন ব্যবহৃত হয় যখন আপনি দুটি ফাইলের মধ্যে কোনো পরিবর্তন বা মিল চিহ্নিত করতে চান।
এখানে আমরা FileUtils.contentEquals() এবং FileContentComparator এর সাহায্যে ফাইলের কন্টেন্ট তুলনা করার পদ্ধতি দেখবো।
FileUtils.contentEquals() মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করতে ব্যবহৃত হয়। এটি দুটি ফাইলের কন্টেন্ট সমান কিনা তা চেক করে এবং ফলস্বরূপ boolean মান প্রদান করে (যদি ফাইলের কন্টেন্ট সমান হয় তবে true
এবং না হলে false
)।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileContentComparatorExample {
public static void main(String[] args) {
try {
// Create two files to compare
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// Compare the content of the two files
boolean areFilesEqual = FileUtils.contentEquals(file1, file2);
// Print the result
if (areFilesEqual) {
System.out.println("The contents of the files are the same.");
} else {
System.out.println("The contents of the files are different.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
FileUtils.contentEquals()
মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করতে ব্যবহৃত হয়েছে।FileContentComparator ক্লাসটি ফাইল কন্টেন্ট তুলনা করতে ব্যবহৃত একটি কাস্টম ক্লাস হতে পারে, যেখানে আপনি Comparator ইন্টারফেস ইমপ্লিমেন্ট করে আপনার নিজস্ব তুলনা কৌশল নির্ধারণ করতে পারেন। তবে Apache Commons IO লাইব্রেরি সরাসরি FileContentComparator ক্লাস প্রদান না করলেও, আপনি Comparator ইন্টারফেস ব্যবহার করে ফাইলের কন্টেন্ট তুলনা করার জন্য একটি কাস্টম কম্প্যারেটর তৈরি করতে পারেন।
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Comparator;
public class FileContentComparatorExample {
public static void main(String[] args) {
// Create two files to compare
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// Create a custom comparator to compare file contents
Comparator<File> fileContentComparator = new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
try {
byte[] content1 = Files.readAllBytes(file1.toPath());
byte[] content2 = Files.readAllBytes(file2.toPath());
// Compare the content of the two files byte by byte
if (content1.length != content2.length) {
return Integer.compare(content1.length, content2.length);
}
for (int i = 0; i < content1.length; i++) {
if (content1[i] != content2[i]) {
return Integer.compare(content1[i], content2[i]);
}
}
return 0; // Contents are equal
} catch (IOException e) {
e.printStackTrace();
return -1;
}
}
};
// Compare the files
int result = fileContentComparator.compare(file1, file2);
if (result == 0) {
System.out.println("The contents of the files are the same.");
} else {
System.out.println("The contents of the files are different.");
}
}
}
এখানে:
compare()
মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করে, এবং তাদের কন্টেন্ট সমান হলে 0 ফেরত দেয়, অন্যথায় পার্থক্য অনুযায়ী একটি নেতিবাচক বা ধনাত্মক মান ফেরত দেয়।ফিচার | FileUtils.contentEquals() | FileContentComparator |
---|---|---|
ব্যবহার | ফাইলের কন্টেন্ট তুলনা করার জন্য সরাসরি ব্যবহারযোগ্য। | কাস্টম কম্প্যারেটর তৈরি করে ফাইল কন্টেন্ট তুলনা করতে হয়। |
এন্ট্রি পয়েন্ট | FileUtils.contentEquals(file1, file2) | Comparator<File> fileContentComparator = ... |
উপকারিতা | সহজ এবং সরাসরি, খুব দ্রুত কাজ করে। | আরও কাস্টমাইজযোগ্য এবং ব্যবহারকারী নির্ধারিত তুলনা মেথড প্রদান করে। |
ডিপেনডেন্সি | Apache Commons IO লাইব্রেরি ছাড়া অন্য কোনো ডিপেনডেন্সি নেই। | Java-এর Comparator ইন্টারফেস এবং ফাইল পরিচালনার জন্য Java NIO ব্যবহার করে। |
ফাইল কন্টেন্ট তুলনা করার প্রয়োজন হতে পারে বিভিন্ন পরিস্থিতিতে:
Apache Commons IO লাইব্রেরির FileUtils.contentEquals() মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করার জন্য একটি সহজ এবং দ্রুত পদ্ধতি সরবরাহ করে। আপনি চাইলে Comparator ইন্টারফেস ব্যবহার করে কাস্টম FileContentComparator তৈরি করে আরও উন্নত এবং কাস্টম তুলনা করতে পারেন। এই দুটি পদ্ধতির মাধ্যমে আপনি ফাইল কন্টেন্টের মধ্যে পার্থক্য বা সমতা সহজেই চিহ্নিত করতে পারবেন, যা সিঙ্ক্রোনাইজেশন, আপডেট এবং ট্র্যাকিংয়ের জন্য অত্যন্ত কার্যকরী।
Apache Commons IO লাইব্রেরি ফাইলের তুলনা (comparison) করার জন্য শক্তিশালী টুল সরবরাহ করে। ফাইলের মধ্যে বিভিন্ন ধরনের তুলনা করা যেতে পারে, যেমন ফাইলের কন্টেন্ট তুলনা, ফাইলের আকার তুলনা, বা ফাইলের মেটাডেটা তুলনা। এই পোস্টে, আমরা Apache Commons IO ব্যবহার করে multiple file comparison techniques নিয়ে আলোচনা করব।
FileUtils.contentEquals()
মেথডটি দুটি ফাইলের কন্টেন্ট তুলনা করার জন্য ব্যবহৃত হয়। এটি দুটি ফাইলের কন্টেন্ট একে অপরের সাথে তুলনা করে, এবং যদি উভয় ফাইলের কন্টেন্ট একেবারে একরকম হয়, তাহলে এটি true রিটার্ন করবে।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileComparisonExample {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// ফাইল কন্টেন্ট তুলনা
boolean isEqual = FileUtils.contentEquals(file1, file2);
if (isEqual) {
System.out.println("ফাইলের কন্টেন্ট একই!");
} else {
System.out.println("ফাইলের কন্টেন্ট আলাদা!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileUtils.contentEquals(file1, file2)
: দুটি ফাইলের কন্টেন্ট তুলনা করে। যদি দুটি ফাইলের কন্টেন্ট একরকম হয়, এটি true রিটার্ন করবে, অন্যথায় false।ফাইলের কন্টেন্ট একই!
ফাইলের আকার তুলনা করতে FileUtils.sizeOf() মেথডটি ব্যবহার করা যেতে পারে। এটি একটি ফাইলের আকার (size) বাইটস (bytes) হিসেবে রিটার্ন করে। ফাইলের আকার তুলনা করে ফাইল দুটি একই আকারের কিনা তা যাচাই করা যায়।
import org.apache.commons.io.FileUtils;
import java.io.File;
public class FileSizeComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
// ফাইল আকার তুলনা
long fileSize1 = FileUtils.sizeOf(file1);
long fileSize2 = FileUtils.sizeOf(file2);
if (fileSize1 == fileSize2) {
System.out.println("ফাইলের আকার সমান!");
} else {
System.out.println("ফাইলের আকার আলাদা!");
}
}
}
FileUtils.sizeOf(file)
মেথডটি একটি ফাইলের আকার বাইটস হিসেবে রিটার্ন করে।ফাইলের আকার সমান!
FileUtils.isFileOlder()
মেথডটি দুটি ফাইলের মধ্যে কোন ফাইলের বয়স (modification time) বেশি তা তুলনা করতে ব্যবহৃত হয়। এটি একটি ফাইলের সংশোধিত সময় এবং অন্য ফাইলের সংশোধিত সময়ের তুলনা করে বলে দেয় কোনটি পুরানো।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileAgeComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// ফাইলের বয়স তুলনা
boolean isFile1Older = FileUtils.isFileOlder(file1, file2);
if (isFile1Older) {
System.out.println("file1.txt পুরানো!");
} else {
System.out.println("file2.txt পুরানো!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileUtils.isFileOlder(file1, file2)
: এটি দুটি ফাইলের সংশোধিত সময় (modification time) তুলনা করে।file1
পুরানো হয়, তাহলে true রিটার্ন করবে, অন্যথায় false।file1.txt পুরানো!
FileUtils.directoryContains()
মেথডটি ব্যবহার করে আপনি দুটি ডিরেক্টরির মধ্যে তুলনা করতে পারেন। এটি চেক করে যে একটি ডিরেক্টরি অন্য ডিরেক্টরির মধ্যে অন্তর্ভুক্ত (contains) কি না।
import org.apache.commons.io.FileUtils;
import java.io.File;
public class DirectoryComparison {
public static void main(String[] args) {
File directory1 = new File("dir1");
File directory2 = new File("dir2");
// ডিরেক্টরি তুলনা
boolean isContained = FileUtils.directoryContains(directory1, directory2);
if (isContained) {
System.out.println("dir2 dir1 এর মধ্যে রয়েছে!");
} else {
System.out.println("dir2 dir1 এর মধ্যে নেই!");
}
}
}
FileUtils.directoryContains(directory1, directory2)
: এটি চেক করে যে directory2
কি directory1
এর মধ্যে রয়েছে।true
রিটার্ন করলে, directory2
directory1
এর মধ্যে থাকবে।dir2 dir1 এর মধ্যে রয়েছে!
ফাইলের কন্টেন্ট তুলনা করার জন্য আপনি MD5 বা SHA1 হ্যাশ ব্যবহার করতে পারেন। ফাইলের হ্যাশ তৈরি করে আপনি তাদের কন্টেন্ট তুলনা করতে পারেন। এটি ফাইলের কন্টেন্ট সম্পূর্ণভাবে তুলনা করার জন্য অত্যন্ত কার্যকরী পদ্ধতি।
import org.apache.commons.io.FileUtils;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.File;
import java.io.IOException;
public class FileHashComparison {
public static void main(String[] args) {
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
try {
// MD5 হ্যাশ তৈরি করা
String file1Hash = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file1));
String file2Hash = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file2));
if (file1Hash.equals(file2Hash)) {
System.out.println("ফাইলের কন্টেন্ট এক!" );
} else {
System.out.println("ফাইলের কন্টেন্ট আলাদা!" );
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
DigestUtils.md5Hex()
: এটি একটি ফাইলের MD5 হ্যাশ তৈরি করে।FileUtils.readFileToByteArray(file)
: এটি ফাইলটিকে byte array এ রূপান্তরিত করে এবং পরে MD5 হ্যাশ তৈরী করতে সাহায্য করে।ফাইলের কন্টেন্ট এক!
Apache Commons IO লাইব্রেরি ফাইল তুলনা করার জন্য বেশ কিছু শক্তিশালী পদ্ধতি সরবরাহ করে। আপনি FileUtils.contentEquals(), FileUtils.sizeOf(), FileUtils.isFileOlder() ইত্যাদি ব্যবহার করে ফাইলের কন্টেন্ট, আকার, বয়স এবং অন্যান্য বৈশিষ্ট্যের তুলনা করতে পারেন। এছাড়াও, আপনি MD5 বা SHA1 হ্যাশ ব্যবহার করে ফাইলের কন্টেন্ট তুলনা করতে পারেন, যা কার্যকরী এবং নির্ভুল ফলাফল দেয়। Apache Commons IO লাইব্রেরি ফাইল ম্যানিপুলেশন এবং তুলনা করার জন্য একটি খুবই কার্যকরী টুল।
common.read_more